#ifndef NODE_H
#define NODE_H

typedef struct Node {
	char stamp[20];
	int type;   /* tipo do no     */
	void *data_type; /* tipo de dados  */
	void *data;      /* dados alocados */
	int data_size;
	void (*draw)(struct Node *this, int x, int y);
	void (*rotate)(struct Node *this, int ang);
	void (*render)(struct Node *this);
	void (*color)(struct Node *this, float *c);
	int x, y, z;
	float cor[3];
	int width, height;
	int rot;
	int frot;
	int fval_allocated;
	int cam[3];
	int view_point[3];
} Node;

typedef enum { \
	NONE, ARRAY, \
	DICTIONARY, \
	HASH_TABLE, \
	SIMPLE_LINKED_LIST, \
	DOUBLE_LINKED_LIST, \
	PRIORITY_LIST, \
	BINARY_TREE, \
	ANY_TREE \
} node_type;

Node *makeNode(node_type t, void *data, int size);
void destroyNode(Node *n);

#endif


